最近研究下反向代理,由于安装一键 lnmp 包时间还是比较长的,还是 Node.js 比较顺手.
现在简单记录一下如何使用 Node.js 进行反向代理网站。
首先安装 Node.js,本次操作在 ubuntu 下已经验证
sudo apt-get install npm
sudo npm install -g n
sudo n latest
这样安装完了 最新版本的 Node.js 下面来写一下简单的脚本。
var http = require("http");
var httpProxy = require("http-proxy");
var proxy = httpProxy.createProxyServer({});
// 捕获异常
proxy.on("error", function () {
res.writeHead(500, {
"Content-Type": "text/plain"
});
res.end("服务端错误");
});
var server = http.createServer(function (req, res) {
var host = req.headers.host;
var ip = req.headers["x-forwarded-for"] || req.connection.remoteAddress;
console.log("your ip is ${ip},host is ${host}");
switch (host) {
case "你的域名":
proxy.web(req, res, {
target: "目标网站"
});
break;
default:
res.writeHead(200, {
"Content-Type": "text/plain"
});
res.end("Node.js 反代");
}
});
console.log("Listening on port 80");
server.listen(80);